微信开发 - 接口简介

由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,需要开通测试账号。

开通测试账号的路径为:

微信公众平台 > 开发者工具 > 公众平台测试帐号 > 进入

或点击传送门,需要填写的为以下几项:

URL:接口文档所在的路径,如:https://localhost/filepath/wxapifile.php

Token:接口文档中设定的Token

域名:网址或主机名,如:localhost

如对以上步骤陌生的同学可以先看这篇文章

接口频率限制

公众号调用接口并不是无限制的。为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码:

1
{"errcode":45009,"errmsg":"api freq out of limit"}

接口频率限制的说明请点击传送门

全局返回码

公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。

1
{"errcode":45009,"errmsg":"api freq out of limit"}

如上的返回码45009表达的就是接口调用超过限制。接口频率限制的说明请点击传送门

接口介绍

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。

access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

access_token相当于开发者的服务器访问微信服务器的一把钥匙,而微信服务器提供的各种API是一个个门,具有正确的access_token才可以得到门后面的东西。

获取微信服务器IP接口

如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,它一般是为了判断请求是否来自于微信,如不是微信服务器则可以返回非法访问等操作。

长链接转短链接接口

顾名思义,就是将一条长链接转成短链接。它的主要使用场景是,如果开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。

获取用户列表接口

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

它主要用于获取和保存用户信息,在高级群发接口中也会使用到。

获取用户基本信息接口

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。

公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间

UnionID机制

开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性

因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的,换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

这也就是说,openid是开发者的唯一用户标识,unionid是整个微信的唯一用户标识,openid是获取unionid的先决条件,两种标识都需要用户关注或使用应用后才能获取。

网页授权接口

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息。

网页授权的两种范围

  • 以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。
  • 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
  • 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的
snsapi_userinfo演示 可能是snsapi_base
snsapi_userinfo snsapi_base

高级群发接口

在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。

高级群发具有两个优点:

  • 可根据用户标签或openid进行群发,普通群发只可针对标签和全部进行群发,高级群发的针对性更强;
  • 高级群发图文内容支持HTML

JS-SDK接口

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。

通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

例如分享功能,JS-SDK可以提供自定义分享标题,内容和图片的支持,还有调用相机,位置等接口。

模板消息接口

公众号可以主动向用户发送消息,用户可以收到服务号每月4条,订阅号每天1条的消息,超出后公众号发送的消息将对此用户屏蔽,这样的限制是不能满足我们的开发需求的。

当用户在公众号进行特定行为时,可以使用模板消息。模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。

不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

JS-SDK分享演示 模板消息演示
JSSDK 模板消息

开发前确定需要的接口

案例如下:

某公司希望将自己的PC商城和自己的微信公众平台进行对接,也就是在微信上绑定PC商城账号的功能,以实现在微信中点击菜单无需登录即可查看自己账号的详情,购物记录等。

那么如何得知需要的接口有哪些呢?首先我们需要:

确定功能的流程

功能流程示例

将功能的流程罗列好以后,即可按照每个流程的需求来确定需要调用的接口。